package demo1;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;

public class Login extends JFrame implements ActionListener {
    private JTextField label2;
    private JPasswordField label5;
    public static void main(String[] args) {
        Login login = new Login();
        login.init();
        login.setVisible(true);
    }
    private URL getFilePath(String path){
        return this.getClass().getClassLoader().getResource(path);
    }
    private void init(){
        //设置窗口标题
        this.setTitle("QQ登录");

        //设置窗口大小
        this.setSize(430, 330);

        //设置窗口居中
        this.setLocationRelativeTo(null);

        // 设置当前窗口（假设this指代一个JFrame实例）的默认关闭操作，当用户关闭窗口时，应用程序将直接退出
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 创建一个JLabel实例north_label，通过ImageIcon类加载指定路径下的图片作为标签的图标
        JLabel north_label = new JLabel(new ImageIcon("D:\\code\\java\\J2024_11_26_qq_test\\src\\resources\\image\\image\\image\\head.png"));

        // 将north_label添加到窗口的北部（BorderLayout.NORTH）区域
        this.add(north_label, BorderLayout.NORTH);

        // 创建一个文本内容为“注册账号”的JLabel实例west_label
        JLabel west_label = new JLabel("注册账号");

        // 创建一个JPanel实例west_panel，用于对组件进行布局管理等操作
        JPanel west_panel = new JPanel();

        // 将west_label添加到west_panel中
        west_panel.add(west_label);

        // 将west_panel添加到窗口的西部（BorderLayout.WEST）区域
        this.add(west_panel, BorderLayout.WEST);

        // 创建一个JLabel实例east_label，通过ImageIcon类加载指定路径下的图片作为标签的图标
        JLabel east_label = new JLabel(new ImageIcon("D:\\code\\java\\J2024_11_26_qq_test\\src\\resources\\image\\image\\image\\ercode.png"));

        // 创建一个JPanel实例east_panel，用于对组件进行布局管理等操作
        JPanel east_panel = new JPanel();

        // 将east_label添加到east_panel中
        east_panel.add(east_label);

        // 将east_panel添加到窗口的东部（BorderLayout.EAST）区域
        this.add(east_panel, BorderLayout.EAST);

        // 创建一个JButton实例south_btn，通过ImageIcon类加载指定路径下的图片作为按钮的图标
        JButton south_btn = new JButton(new ImageIcon("D:\\code\\java\\J2024_11_26_qq_test\\src\\resources\\image\\image\\image\\login.png"));

        // 设置按钮的内容区域（即按钮的主体部分）为透明填充，这样按钮只会显示图片图标而没有默认的背景填充颜色
        south_btn.setContentAreaFilled(false);

        //设置去除边框
        south_btn.setBorderPainted(false);

        //设置获取焦点时取消绘制
        south_btn.setFocusPainted(false);

        //注册监听事件
        south_btn.addActionListener(this);

        // 将south_btn添加到窗口的南部（BorderLayout.SOUTH）区域
        this.add(south_btn, BorderLayout.SOUTH);

        //中部
        JPanel center_panel = new JPanel(new GridLayout(3,3));

        //第一行第一列
        JLabel label1 = new JLabel("QQ号码");

        //第一行第二列
        label2 = new JTextField();

        //第一行第三列
        JButton label3 = new JButton(new ImageIcon("D:\\code\\java\\J2024_11_26_qq_test\\src\\resources\\image\\image\\image\\clear.gif"));

        //第二行第一列
        JLabel label4 = new JLabel("QQ密码");

        //第二行第二列
        label5 = new JPasswordField();

        //第二行第三列
        JLabel label6 = new JLabel("忘记密码");

        //第三行第一列
        JCheckBox label7 = new JCheckBox("隐身登录");

        //第三行第二列
        JCheckBox label8 = new JCheckBox("记住密码");

        //第三行第三列
        JLabel label9 = new JLabel("申请密码保护");
        //改变字体颜色
        label9.setForeground(Color.BLUE);
        center_panel.add(label1);
        center_panel.add(label2);
        center_panel.add(label3);
        center_panel.add(label4);
        center_panel.add(label5);
        center_panel.add(label6);
        center_panel.add(label7);
        center_panel.add(label8);
        center_panel.add(label9);
        // 将center_panel容器添加到当前窗体（this所代表的窗口对象）的中心区域。BorderLayout.CENTER是一种布局常量，表示将组件放置在窗口的中心位置，使得center_panel在窗口中处于中心布局显示
        this.add(center_panel, BorderLayout.CENTER);
    }
    // 重写ActionListener接口中的actionPerformed方法。该方法会在相关的动作事件发生时被调用，比如当用户点击了某个按钮（假设与登录操作相关的按钮绑定了此ActionListener）
    @Override
    public void actionPerformed(ActionEvent e) {
        // 获取label2标签中的文本内容，并通过toString()方法将其转换为字符串类型，然后使用trim()方法去除字符串前后的空白字符。这里推测label2可能用于显示用户输入的QQ号码，获取该值以便后续进行登录验证等操作
        String qq = label2.getText().toString().trim();
        // 获取label5标签中的文本内容，同样先转换为字符串再去除前后空白字符。假设label5用于显示用户输入的密码，获取该值用于登录验证与预设密码进行比对等操作
        String pwd = label5.getText().toString().trim();

        // 判断获取到的QQ号码（qq）是否等于预设的字符串"12345"，并且获取到的密码（pwd）是否等于预设的字符串"admin"。如果两者都满足，说明用户输入的登录信息正确，即表示登录成功
        if ("12345".equals(qq) && "admin".equals(pwd)) {
            System.out.println("登录成功");
            //销毁当前界面
            this.dispose();
            Chat chat = new Chat();
            chat.init("qq聊天",400,600);
            //连接服务器
            new Thread(){
                @Override
                public void run() {
                    chat.connServer();
                }
            }.start();
        } else {
            // 如果QQ号码或密码不匹配预设值，即登录信息错误，那么使用JOptionPane类的showMessageDialog方法弹出一个消息对话框。
            // 第一个参数this表示将当前窗口作为该对话框的父窗口，这样对话框会在当前窗口的基础上进行显示定位等操作；
            // 第二个参数"用户名或密码错误"是要在对话框中显示的提示信息，用于告知用户登录失败的原因是用户名或密码不正确
            JOptionPane.showMessageDialog(this, "用户名或密码错误");
        }
    }
}